會選這個題目,是因為我發現一件事:現在用 AI 寫網站(也就是最近很常聽到的 vibecoding),加上自己實作時也是一知半解,抱著能上線就好的心態做出成品,但在最近人人都能架網站的情況下,意識到網站安全的重要性---「能跑」不等於「安全」。
AI 很擅長讓功能動起來,卻預設不會幫你顧好安全。它生出來的程式碼,可能:
最麻煩的是,這些問題從畫面上完全看不出來 —— 網站看起來一切正常,直到出事那天。
我自己就用 AI 寫過網站,也曾對著跑起來的成品覺得滿意,看著網路上的漏洞測試,想自己親手來練習。
我的做法是 邊做邊打:用 Python + Flask 親手做一個刻意留有漏洞的練習網站,紀錄所有遇到的問題。
每篇都照同一個節奏走:
示範漏洞怎麼被利用 → 解釋背後原理 → 動手修好它
我相信,親眼看過漏洞怎麼被打穿,比單純背「要做輸入驗證」更容易記住。
| 週次 | 主題 | 會談到什麼 |
|---|---|---|
| 第 1 週 | 輸入的漏洞 | SQL Injection、XSS、檔案上傳等,所有「不該相信使用者輸入」的故事 |
| 第 2 週 | 認證與授權 | 密碼怎麼存、Session 怎麼管,以及經典的「改個網址就進了別人的後台」 |
| 第 3 週 | 設定與部署 | 金鑰外洩、環境變數、HTTPS 與安全標頭,並把網站真正部署到 Render 上線 |
| 第 4 週 | 實戰 | 用 OWASP Top 10 和免費工具,幫網站做一次完整安全檢查 |
最後講一個我整個系列都會守住的原則:
所有攻擊示範,都只在我自己電腦的本機環境進行。
練習攻擊,只能打自己搭的、自己的靶。真正部署上線的,永遠是修好之後的安全版本。
這條線不只是免責聲明,它本身就是資安素養的一部分 —— 未經授權的測試就是入侵,不管你的出發點多良善。